// 2013年版权归Go作者所有。版权所有。
// 此源代码的使用受BSD样式的约束
// 可以在许可证文件中找到的许可证。

// 包编码定义了其他包共享的接口
// 在字节级和文本表示之间转换数据。
// 检查这些接口的包包括encoding/gob，
// encoding/json和encoding/xml。因此，实施
// 接口一次可以使类型在多种编码中有用。
// 实现这些接口的标准类型包括time.time和net.IP。
// 接口成对出现，产生和使用编码数据。
package encoding

// BinaryMarshaler是由可以
// 将自身封送为二进制形式。
// None
// MarshalBinary将接收器编码为二进制形式并返回结果。
type BinaryMarshaler interface {
	MarshalBinary() (data []byte, err error)
}

// BinaryUnmarshaler是由可以
// 解组自身的二进制表示。
// None
// 解组二进制必须能够解码由MarshalBinary生成的表单。
// 如果要保留数据，UnmarshalBinary必须复制数据
// 回来以后。
type BinaryUnmarshaler interface {
	UnmarshalBinary(data []byte) error
}

// TextMarshaler是由可以
// 将自身编组为文本形式。
// None
// MarshalText将接收器编码为UTF-8编码的文本并返回结果。
type TextMarshaler interface {
	MarshalText() (text []byte, err error)
}

// TextUnmarshaler是由可以
// 解组自身的文本表示。
// None
// 解组器文本必须能够解码由MarshalText生成的表单。
// 如果要保留文本，解组文本必须复制文本
// 回来以后。
type TextUnmarshaler interface {
	UnmarshalText(text []byte) error
}
